Desarrolla un sistema web completo para "Académica SRL" (Bolivia), empresa de capacitación profesional. Stack: PHP 8.2+ (estructura MVC propia, sin frameworks), MySQL 8.0, Bootstrap 5.3, jQuery 3.7, DataTables, Chart.js, SweetAlert2, PHPMailer. Hosting compartido (cPanel). UTF-8. Responsive.

## 1. ESTRUCTURA DE ARCHIVOS MVC
/academica_srl/
├── config/
│   ├── database.php          // Conexión PDO, charset utf8mb4
│   ├── constants.php         // Roles, estados, comisiones
│   └── functions.php         // Helpers globales
├── controllers/
│   ├── AuthController.php
│   ├── DashboardController.php
│   ├── LeadController.php
│   ├── VentaController.php
│   ├── InscripcionController.php
│   ├── FinanzasController.php
│   ├── ComisionController.php
│   ├── CursoController.php
│   ├── VendedoraController.php
│   ├── SeguimientoController.php
│   └── ReporteController.php
├── models/
│   ├── User.php
│   ├── Lead.php
│   ├── Venta.php
│   ├── Inscripcion.php
│   ├── Pago.php
│   ├── Comision.php
│   ├── Curso.php
│   ├── VendedoraCurso.php
│   ├── SeguimientoEnvio.php
│   └── CertificadoEntregado.php
├── views/
│   ├── layouts/
│   │   ├── header.php
│   │   ├── sidebar.php
│   │   ├── footer.php
│   │   └── scripts.php
│   ├── auth/
│   │   └── login.php
│   ├── dashboard/
│   │   └── index.php        // KPIs: leads, ventas, inscritos, comisiones
│   ├── leads/
│   │   ├── lista.php        // Pipeline de leads con estados
│   │   ├── seguimiento.php  // 3 llamadas + historial
│   │   └── formulario.php   // Formulario público de inscripción
│   ├── ventas/
│   │   ├── registrar.php    // QR, Efectivo, Transferencia
│   │   └── comprobantes.php
│   ├── inscripciones/
│   │   ├── lista.php
│   │   └── detalle.php
│   ├── finanzas/
│   │   ├── caja.php         // Ingresos/Egresos, saldo
│   │   ├── movimientos.php
│   │   └── cierre.php
│   ├── comisiones/
│   │   ├── calcular.php     // 5% si >= X monto, 10% si < X
│   │   ├── pagar.php
│   │   └── historial.php
│   ├── cursos/
│   │   ├── lista.php
│   │   └── asignar.php      // Vendedoras designadas por curso
│   ├── vendedoras/
│   │   ├── lista.php
│   │   └── rendimiento.php
│   ├── envios/
│   │   ├── seguimiento.php  // Estado: Pendiente/Enviado/Entregado
│   │   └── certificados.php
│   └── reportes/
│       ├── inscritos_por_curso.php
│       ├── inscritos_por_vendedora.php
│       ├── ventas_mensual.php
│       ├── comisiones_pagadas.php
│       └── finanzas_pdf.php
├── public/
│   ├── css/
│   ├── js/
│   ├── uploads/
│   │   ├── comprobantes/
│   │   └── certificados/
│   └── index.php            // Front controller
├── .htaccess
└── database.sql


## 2. BASE DE DATOS MySQL (database.sql)

Tablas principales con relaciones y constraints:

### `usuarios` (Admin + Vendedoras)
- id, nombre, email, password_hash, rol ENUM('admin','vendedora'), telefono, activo, created_at

### `cursos`
- id, nombre, descripcion, precio_individual, precio_pareja, precio_grupal, rubro, activo, fecha_inicio, fecha_fin, cupo_maximo

### `vendedoras_cursos` (Cursos habilitados por vendedora)
- id, vendedora_id, curso_id, asignado_en

### `leads` (Interesados desde Meta)
- id, vendedora_id, numero_whatsapp, nombre (nullable), curso_interes_id, estado ENUM('nuevo','llamada_1','llamada_2','llamada_3','cerrado','no_interesado'), fecha_ultimo_contacto, notas_llamada_1, notas_llamada_2, notas_llamada_3, fecha_llamada_1, fecha_llamada_2, fecha_llamada_3, created_at

### `ventas`
- id, lead_id, vendedora_id, tipo_inscripcion ENUM('individual','pareja','grupal'), monto_total, metodo_pago ENUM('qr','efectivo','transferencia'), comprobante_path, estado_pago ENUM('pendiente','verificado','rechazado'), verificado_por, fecha_verificacion, created_at

### `inscripciones` (Datos del formulario post-pago)
- id, venta_id, ci, expedido (LP, CB, SC, etc.), nombre_completo, profesion, whatsapp, email, ciudad_capital, municipio, temas_interes, material_enviado BOOLEAN, certificado_generado BOOLEAN, created_at

### `pagos` (Registro detallado para caja)
- id, venta_id, tipo ENUM('ingreso','egreso'), monto, concepto, metodo_pago, fecha, registrado_por, created_at

### `comisiones`
- id, vendedora_id, venta_id, monto_venta, porcentaje_aplicado, monto_comision, estado ENUM('pendiente','pagada'), fecha_pago, pagado_por, created_at

### `seguimiento_envios`
- id, inscripcion_id, tipo_envio ENUM('material','certificado'), estado ENUM('pendiente','preparado','enviado','entregado'), numero_seguimiento (courier), fecha_envio, fecha_entrega, notas, created_at

### `certificados_entregados`
- id, inscripcion_id, fecha_entrega, metodo ENUM('digital','fisico'), entregado_por, recibido_por, created_at

## 3. REGLAS DE NEGOCIO CRÍTICAS

### Comisiones Vendedoras:
- Si monto_venta >= 200 BOB → comisión 5%
- Si monto_venta < 200 BOB → comisión 10%
- Solo se calcula cuando estado_pago = 'verificado'
- Admin puede marcar como 'pagada' y registrar fecha

### Flujo Lead → Venta → Inscripción:
1. Vendedora copia número de Meta → crea Lead (estado 'nuevo')
2. Sistema obliga 3 seguimientos (llamada_1, llamada_2, llamada_3) con fechas y notas
3. Si cierra → crea Venta con tipo_inscripcion y metodo_pago
4. Si pago verificado → envía link de formulario al WhatsApp/email del lead
5. Lead llena formulario → crea Inscripcion
6. Admin genera material/certificado → registra en SeguimientoEnvio

### Caja/Finanzas:
- Todo ingreso de venta verificada entra automáticamente a caja
- Admin puede registrar egresos (comisiones pagadas, gastos operativos)
- Cierre diario: saldo inicial + ingresos - egresos = saldo final
- Reporte PDF con logo de Academica SRL

## 4. FUNCIONALIDADES POR ROL

### VENDEDORA:
- Dashboard personal: sus leads, conversion rate, comisiones ganadas
- CRUD leads (solo los suyos)
- Registrar venta desde lead (seleccionar tipo inscripcion, subir comprobante)
- Ver estado de sus inscripciones
- NO ve finanzas globales ni comisiones de otras

### ADMIN:
- Todo lo anterior + acceso total
- Asignar cursos a vendedoras
- Verificar/Rechazar pagos (subidos por vendedoras)
- Ver caja completa (ingresos/egresos/saldo)
- Calcular y pagar comisiones
- Generar reportes: 
  * Inscritos por curso (con gráfico Chart.js)
  * Inscritos por vendedora
  * Ventas mensuales (filtro por fecha)
  * Comisiones pendientes vs pagadas
  * Seguimiento de envíos (Pendiente/Enviado/Entregado)
- Exportar reportes a PDF (usar librería TCPDF o dompdf incluida en vendor/)
- Gestión de envíos y certificados entregados

## 5. FORMULARIO PÚBLICO DE INSCRIPCIÓN
URL: /inscripcion/formulario?token=UUID (token único por venta verificada)
Campos obligatorios:
- CI con expedición (select: LP, CB, SC, OR, PT, TJ, BN, PD)
- Nombre completo
- Profesión
- WhatsApp (validar formato Bolivia: +591XXXXXXXX)
- Email (para material)
- Ciudad/Capital o Municipio
- Temas de interés para futuros cursos (textarea)

Al enviar: marca venta como "inscripcion_completa", crea registro en inscripciones, envía email de confirmación con PHPMailer.

## 6. SEGUIMIENTO DE ENVÍOS Y CERTIFICADOS
- Tabla tipo kanban: Pendiente → Preparado → Enviado → Entregado
- Campos: número de seguimiento (courier), fecha envío, fecha entrega
- Certificados: registro apartado con fecha de entrega y método (digital/físico)
- Filtros por curso, por vendedora, por estado

## 7. REPORTES ESPECÍFICOS REQUERIDOS
1. **Inscritos por Curso**: Tabla + gráfico de barras, filtro por fecha/rubro
2. **Inscritos por Vendedora**: Ranking, tasa de conversión, comisiones acumuladas
3. **Ventas Mensuales**: Comparativa mes a mes, por método de pago
4. **Estado de Comisiones**: Pendientes vs Pagadas, detalle por vendedora
5. **Seguimiento de Envíos**: Listado con estados coloridos, fechas
6. **Caja General**: Ingresos, egresos, saldo, filtro por rango de fechas, exportable PDF

## 8. SEGURIDAD Y VALIDACIONES
- Login con password_hash() y session management
- CSRF tokens en todos los forms
- Validación de roles en cada controller (middleware simple)
- Subida de comprobantes: solo JPG/PNG/PDF, max 5MB, renombrar con UUID
- SQL injection prevention: PDO prepared statements en TODOS los modelos
- XSS prevention: htmlspecialchars() en todas las vistas

## 9. CONFIGURACIÓN DE COMISIONES (Admin editable)
Tabla `config_comisiones`:
- id, monto_minimo_5pct (default 500), porcentaje_mayor (5), porcentaje_menor (10)
Admin puede modificar umbrales desde panel.

## 10. NOTIFICACIONES
- Email al lead cuando pago es verificado (link formulario)
- Email al lead cuando material es enviado
- Email al lead cuando certificado está listo
- Notificación interna a vendedora cuando lead cierra venta

## ENTREGABLES REQUERIDOS:
1. database.sql completo con datos de prueba (1 admin, 2 vendedoras, 3 cursos, 5 leads, 2 ventas verificadas)
2. Sistema funcional 100% operativo subible a hosting
3. .htaccess con rewrite para front controller
4. README.md con credenciales de prueba y guía de instalación
5. Todos los archivos PHP con comentarios en español

